package com.ruoyi.exam.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.exam.domain.ExamBankQuestion;
import com.ruoyi.exam.vo.ExamBankQuestionVo;
import com.ruoyi.exam.vo.ExamQuestionWithSortVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 题库题目关联Mapper接口
 *
 * @author Tellsea
 * @date 2025-05-30
 */
public interface ExamBankQuestionMapper extends BaseMapper<ExamBankQuestion> {

    Page<ExamBankQuestionVo> queryList(Page<?> page, @Param("entity") ExamBankQuestionVo entity);

    List<ExamBankQuestionVo> queryList(@Param("entity") ExamBankQuestionVo entity);

    ExamBankQuestionVo queryById(@Param("id") Long id);

    /**
     * 获取指定题库的所有题目，按顺序排列
     */
    List<ExamQuestionWithSortVo> getQuestionsByBankId(@Param("bankId") Long bankId);

    /**
     * 获取指定题库的题目ID列表，按顺序排列
     */
    List<Long> getQuestionIdsByBankId(@Param("bankId") Long bankId);

    /**
     * 根据题库ID和排序号获取题目
     */
    ExamQuestionWithSortVo getQuestionBySortOrder(@Param("bankId") Long bankId, @Param("sortOrder") Long sortOrder);

    /**
     * 获取下一题
     */
    ExamQuestionWithSortVo getNextQuestion(@Param("bankId") Long bankId, @Param("currentSortOrder") Long currentSortOrder);

    /**
     * 获取题库中最大的排序号
     */
    Long getMaxSortOrder(@Param("bankId") Long bankId);
}
